const express = require('express')
const sqlHelper = require('../utils/sqlHelper')
// 引入jsonwebtoken模块
const jsonwebtoken = require('jsonwebtoken')
const router = express.Router()

// 用户注册 /user/register
router.post('/register', (req, res) => {
  const { phone, username, password, gender } = req.body
  sqlHelper(`select * from user where username = '${username}'`, (error, results) => {
    if (error) {
      console.log(error);
      res.send({ code: 500, data: null, msg: '注册失败' })
    } else {
      // 因为数据库查询无论结果怎样都会提示成功，因此要再进行结果的长度判定
      if (results.length === 0) {
        //如果长度为0，说明数据库没有该用户，可以进行注册（本质：添加数据）
        sqlHelper(`insert into user(phone,username,password,gender) values('${phone}','${username}','${password}','${gender}')`, (error2, results2) => {
          if (error2) {
            console.log(error2);
            res.send({ code: 500, data: null, msg: "注册失败" })
          } else {
            res.send({ code: 200, data: null, msg: '注册成功' })
          }
        })
      } else {
        res.send({ code: 500, data: null, msg: "该用户已存在！" })
      }
    }

  })
})
// 用户登录 /user/login
router.post('/login', (req, res) => {

  const { phone } = req.body

  if (phone) {
    // 当用户选择的是手机号的方式登录，执行面的操作
    console.log('传入了手机号');
    const { phone, password } = req.body
    console.log(phone, password);
    sqlHelper(`select * from user where phone = '${phone}' and password='${password}'`, (error, results) => {
      if (error) {
        console.log(error);
        res.send({ code: 500, data: null, msg: '登录失败' })
      } else {
        // 因为数据库查询无论结果怎样都会提示成功，因此要再进行结果的长度判定
        if (results.length === 0) {
          //如果长度为0，说明用户或密码错误
          res.send({ code: 500, data: null, msg: '登录失败，手机号或密码错误' })
        } else {
          // 生成token
          const token = jsonwebtoken.sign({ phone }, "key", { expiresIn: '1h' })
          console.log(results);
          res.send({
            code: 200,
            data: {
              id: results[0].id,
              username: results[0].username,
              phone: results[0].phone
            },
            msg: "登录成功", token: token
          })
        }
      }

    })
  } else {
    // 当用户选择的是用户名方式登录，执行以下操作
    const { username, password } = req.body
    sqlHelper(`select * from user where username = '${username}' and password='${password}'`, (error, results) => {
      if (error) {
        console.log(error);
        res.send({ code: 500, data: null, msg: '登录失败' })
      } else {
        // 因为数据库查询无论结果怎样都会提示成功，因此要再进行结果的长度判定
        if (results.length === 0) {
          //如果长度为0，说明用户或密码错误
          res.send({ code: 500, data: null, msg: '登录失败，用户名或密码错误' })
        } else {
          // 生成token
          const token = jsonwebtoken.sign({ username }, "key", { expiresIn: '1h' })
          console.log(token);
          res.send({
            code: 200,
            data: {
              id: results[0].id,
              username: results[0].username,
              phone: results[0].phone
            },
            msg: "登录成功", token: token
          })
        }
      }

    })
  }

})

router.get('/get-user-info', (req, res) => {
  console.log('获取用户信息');
  const { id } = req.query
  sqlHelper(`select username,phone,gender from user where id=${id}`, (error, results) => {
    if (error) {
      res.send({ code: 500, data: null, msg: '服务器出错了！' })
      console.log(error);
    } else {
      res.send({ code: 200, data: results[0], msg: '查询成功' })
    }
  })
})

module.exports = router